<?php
/**
 * Script para copiar la imagen de la noticia en edición al directorio
 * adecuado.
 * @author Sahib J. Leo
 */
require '../../config.php';
require PATH . 'classes/ofj-orm/Noticia.php';

// Array asociativo con información sobre el resultado de la acción ejecutada
$result = array(
  'error' => false,
  'message' => ''
);

// Flag para enviar la respuesta en JSON o no.
$send_json = true;

switch( $_GET['action'] ){

  /*
   * Guardar imagen de la noticia
   */
  case 'upload_image':
    if($_FILES['image_file']['error'] != UPLOAD_ERR_OK){
      $result['error']   = true;
      $result['message'] = 'Ocurrio un error al enviar la imagen.';
    } else {
      $output_file = PATH . Noticia::IMG_PATH . '/' . $_POST['noticia_id'] . '.jpg';
      if( move_uploaded_file($_FILES['image_file']['tmp_name'], $output_file) ){
        // Asignar los permisos correctos al archivo.
        chmod($output_file, 0666);
      } else {
        $result['error']   = true;
        $result['message'] = 'No se pudo copiar la imagen.';
      }
    }

    // Enviar respuesta para el iframe
    echo '<script type="text/javascript">';
    echo 'var UploadResult = ', json_encode($result), ';';
    echo '</script>';

    // evitar enviar la respuesta en JSON
    $send_json = false;

    break;

  /*
   * Guardar datos de la noticia
   */
  case 'save':
    try{
      $Noticia = Noticia::instance()->findById($_POST['noticia_id']);
      $Noticia->titulo       = stripslashes($_POST['titulo']);
      $Noticia->titulo_en    = stripslashes($_POST['titulo_en']);
      $Noticia->contenido    = stripslashes($_POST['contenido']);
      $Noticia->contenido_en = stripslashes($_POST['contenido_en']);
      // Acutalizar la fecha solo una vez
      if($Noticia->fecha == null){
        $Noticia->fecha = new SahORMSqlExpression('NOW()');
      }
      $Noticia->save();
      $result['message'] = 'Datos de la noticia guardados';
    }catch(SahORMException $e){
      $result['error']   = true;
      $result['message'] = 'No se pudo guardar la noticia';
    }
    break;

  case 'publish':
    try{
      Noticia::instance()->update(array('publicada' => 'S'), array(
        'where' => '`id` = :id',
        'arguments' => array(':id' => $_POST['noticia_id'])
      ));
      $result['message'] = 'La noticia ha sido publicada.';
    } catch(SahORMException $e) {
      $result['error']   = true;
      $result['message'] = 'No se pudo publicar la noticia.';
    }
    break;

  case 'delete':
    try{
      Noticia::instance()->delete(array(
        'where' => '`id`=' . ((int)$_POST['noticia_id'])
      ));
      Noticia::deleteImage((int)$_POST['noticia_id']);
    }catch(SahORMExcepton $e){
      $result['error'] = true;
      $result['message'] = 'No se pudo borrar la noticia';
    }
    break;

}

// Enviar respuesta en JSON
if($send_json){
  header('Content-Type: application/json;charset=utf-8');
  echo json_encode($result);
}
?>